How To 
by "Cajun" David Richard

                   Greetings all. This month, I will be discussing some basic techniques of computer
                    diagnosis and bug tracking. If you own a computer, and I suspect that if you are
                    reading this you do, chances are that you will eventually experience some problems
                    with your computer. Presented here are some general processes that you can go
                    through that will help you iron out these kinks. 

You don't have to be a "Computer Guru" to discover what is happening with your machine. Through an orderly process of elimination, anyone can whittle down possibilities to a point where the problem can be solved. The main thing to keep in mind is that computers are blind - they do what you tell them. Don't be afraid of what you do not know about your computer. With a little experimentation you can conquer any problem.  

Control your environment and duplicate the bug

One of the most important things to do when looking for bugs is to control your environment. Making haphazard changes will make your bug search more complicated. When you do bug tracking, you need to rule out possibilities. If you add additional software or change your situation when you are looking for a bug, finding it can be more work than necessary. 

Another important thing to do is to try and duplicate the bug. This isn't always possible, because
some crashes are seemingly random. However, if you can set up a situation where you can make your machine crash consistently, you are well on your way to finding the bug. 

INIT's and the memory structure

I will deviate from the topic for a moment to explain the basic structure of the Macintosh. With the introduction of System 7, Apple changed, rather simplified their operating system. You hear many terms - DA's, Extensions, Control Panels, Applications - but how they all fit together is rather simple. 

Basically there are three types of software entities: The System Software, INIT's and Applications. The System Software is always present. It allows you to work with your files on your disks and use hardware such as your keyboard and mouse. The important point is that the System Software is always present and is the overseer of the system. Every application on your computer works with the System Software. There is also an application associated with the System Software - you know it as the Finder. The Finder is your link to the System Software, and allows you to control the things the System Software does. 

INIT's are files you keep in your Extensions and Control Panels folders. These programs are additions to your System Software (like a luggage rack may be to your station wagon). They are called INIT's because they load in with your System Software at startup time (initialization routines). This is why you need to restart your machine in order for an INIT to take effect. Essentially, they become part of your System software, and should be considered as such. 

We are all familiar with applications. You need to launch them when you want to use them and quit them when you are done. DA's are also treated like applications. Applications are given their own memory space to work, similar to a fenced in yard. Applications will normally work within their own area, and don't usually interfere with each other. The Finder is also given it's own memory space. This is best demonstrated in the "About this Macintosh..." dialog box. 

OK, quick review - The Finder is an application that is always running and is your link to the System Software (the overseer of the system). INIT's are additions to the System Software. Applications are programs that are similiar to tools that you use when you need them. The main thing to keep in mind about Applications is that they usually do not interfere with each other. Why have I told you all of this? Well, it is good to know how different software entities relate to each other when looking for bugs. The preceding information is all you really need to know. From here on, you will use this information - along with an intelligent trial and error process - to hunt down your problem. 

Back to bugs

Now that we have laid a foundation, lets talk about bugs. There are three types of bugs: 

       • Bugs that "just started happening"

       • Bugs that have always been there

       • The mysterious crashing bug 

Bugs that "just started happening"

This is the most common kind of bug. If you are having a problem that just appeared out of nowhere, think about what you have added to your machine recently. Chances are a new extension or a new system software upgrade could be causing the problem. Keep in mind that a recently added application won't normally cause these types of problems. Applications stay in their own space, whereas INIT's and the System Software affect everything on your computer.

Now, if you have recently added an application - and that application is running when you have your crash - there could be a problem with the application. I will go over this more in a bit. 

Bugs that have always been there

Bugs that have always been there are bugs that "just started happening" along time ago but have been ignored or dealt with over time. When you encounter a bug, you can either ignore it, or solve it. Either way, bugs never start out as "having always been there." But, if you never find it and eliminate it, or if you can't get rid of it, it will always be there and it won't go away.

If you can't get rid of a bug right away (like by removing an extension or if it is a System Software bug), there may be a way to work around it, or a way to simply avoid it. These cases are rather inconvenient, but as they say, knowing is half the battle. 

The mysterious crashing bug

Now some people will have crashes that don't make sense. You will be working on your machine and it will just up and crash. These types of problems are hard to find because it is usually difficult to duplicate the problem. But if you work with the machine long enough, keeping your software constant (not adding things, changing your controlled environment), you should begin to see a pattern. These random crashes are usually due to a poorly written INIT or maybe something in the System Software. There are ways to discover this, as we will soon find out. 

Squishing the sucker

When you are tracking a bug, your tracking needs to be done in an orderly fashion. There are many factors that can contribute. If you remove the factors one at a time, and only one at a time, finding your problem should be easy. Take the time to rule out every factor in a logical manner, and try not to make many changes at once. If you do, you can loose track of what may be causing the problem.

Restart with your INIT's off

If you have ever called a tech support department, more than likely you probably have heard this before. This is the first step because it removes many variables that can cause problems. If you have a bug that happens across the board (like the mysterious crashing bug), it will probably be eliminated by restarting with your INIT's off (restarting with the Shift key held down). Likewise, a crash in an application that is eliminated by doing this is an INIT conflict. This should always be your first step. 

If the problem continues, you can be sure it isn't one of your INIT's. It can't be because you have removed them from the equation. If the problem doesn't continue, you can assume that it is one of your INIT's. If this is the case, you will have to find which INIT is causing the problem. 

Finding the right INIT

There is an easy way and a fast way to do this. The easy way is to add your INIT's back in your system one at a time (using an extension manager), restarting between the addition of each one and trying to duplicate the bug. This can be time consuming, but it will work. When the bug is duplicated, the last INIT loaded usually is the culprit. You can be certain of this by loading that INIT, and only that INIT, in your system and trying to duplicate the bug. 

The other way is called "Divide and Conquer." It follows three simple rules. 1) Load half of the INIT's in the current set. 2) If the bug does not occur, load the other half. 3) If the bug does occur, go to step #1. Dividing your INIT's in half this way is a faster way of seeking out a problem extension, but you need to be a little more organized when you use this method. 

Sometimes you can have an INIT that works fine by itself, but will cause problems when another INIT is loaded. INIT's that conflict with each other are a little harder to find, but with an orderly method of testing you can discover under what circumstances you are having the problem. Just make sure to watch closely the effect your changes make on the system. 

If you find an INIT that is causing a problem, contact the author and explain to them what you have found. More than likely there will be a newer version available or in the works. 

System Software bugs

System Software bugs are a little easier to find, but are usually mistaken for INIT or application problems. The MacOS released by Apple is usually pretty stable, but you can run into circumstances where problems do arise. If you rule out all of your INIT's, and the problem doesn't happen while working in an application, or it happens in all apps, you can bet the problem is with the System Software. What can you do? Wait for the next System Upgrade and try to avoid the situation until then. 

Application bugs

These are the easiest to find because the bug only shows when the application is running, and will also occur with the INIT's off. You can usually duplicate the bug pretty consistently. In this
situation, find out if you have the latest version of the application by contacting the developer, and upgrade your copy. 

Sometimes, the addition of System Software or an INIT will uncover a bug in an application. If this is the case, you probably do not have the latest version of the application. Developers are usually up to date with changes to the System, and if something is changed, it is usually fixed in a later version of the software. The best rule of thumb is to always have the latest version of everything. 

In conclusion

Wow, this has turned out to be a rather long article. I hope that this ranting has helped shed a little light on why things go wrong on your System. I also hope that this helps you diagnose your own computer's problems. If you still have trouble, call tech support for Pete's sake! That's what they're there for! 

Ed Note - Cajun is very happy that the snow has melted in Rochester. He is no longer
restricted to the plush, warm, comfortable automobile that he usually drives around. He can
now ride around town on a skinny little bicycle, cheating death around every turn. Cajun calls
this "living." If it wasn't for the bike helmet...